package cn.iocoder.yudao.module.resource.controller.admin.cosplay.vo;

import cn.iocoder.yudao.module.infra.service.file.UploadFileResult;
import cn.iocoder.yudao.module.resource.controller.admin.tag.vo.TagRespVO;
import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
import com.alibaba.excel.annotation.ExcelProperty;
import com.alibaba.fastjson.annotation.JSONField;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;

import java.time.LocalDateTime;
import java.util.List;

@Schema(description = "管理后台 - 角色 Response VO")
@Data
@ExcelIgnoreUnannotated
public class LmCosplayRespVO {

    @Schema(description = "角色id", requiredMode = Schema.RequiredMode.REQUIRED, example = "16299")
    @ExcelProperty("角色id")
    private Integer id;

    @Schema(description = "角色名字", example = "张三")
    @ExcelProperty("角色名字")
    private String name;

    @Schema(description = "介绍 说明")
    @ExcelProperty("介绍 说明")
    private String intro;

    @Schema(description = "角色图片id")
    @JSONField(serialize = false)
    private Long roleImageId;

    @Schema(description = "角色图片信息", example = "29589")
    private UploadFileResult roleImage;

    @Schema(description = "角色头像id")
    private Long roleIconId;

    @Schema(description = "角色头像信息")
    private UploadFileResult roleIcon;

    @JSONField(serialize = false)
    private String tagArray;

    @Schema(description = "角色关联的标签")
    private List<TagRespVO> tagArrayVo;

    @Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED)
    @ExcelProperty("创建时间")
    private LocalDateTime createTime;

    @Schema(description = "提示词")
    private String prompt;

    @Schema(description = "音色")
    private String voice;

    @Schema(description = "单色文件path")
    private String voicePath;

    @Schema(description = "声纹id")
    private Integer audioToneId;

    @Schema(description = "声纹名字")
    private String audioToneName;

    @Schema(description = "声纹下载地址")
    private String voiceUrl;

    @Schema(description = "短期记忆消息数量")
    private Integer shortMemoryMessageSize;

    @Schema(description = "角色视频id")
    private Long roleVideoId;

    @Schema(description = "角色视频")
    private UploadFileResult roleVideo;

    @Schema(description = "年龄")
    private Integer age;

    @Schema(description = "执业")
    private String occupation;

    @Schema(description = "婚姻状况")
    private String maritalStatus;

    @Schema(description = "人物标签，多个标签用逗号分隔")
    private String tags;

    @Schema(description = "展示位置")
    private String showLocation;

}